import axios from 'axios'

/**
 * 设置超时时间和跨域是否允许携带凭证
 */
axios.defaults.timeout = 10000 //设置十秒
// axios.defaults.withCredentials = true //例如：登录校验session和cookie
/**
 * 设置请求数据参数传递的格式，默认是json格式，但是在登录校验中后台一般设置请求格式：x-www-form-urlencoded(name=xxx,age=xxx)
 * 看服务器要求什么格式
 */
axios.defaults.headers['Content-Type'] = 'application/json' //声明请求格式

const instance = axios.create({
  // 方便我们从开方环境都运行环境的改变
  baseURL: 'http://localhost:9010',
  timeout: 5000,
  headers: { 'Content-Type': 'application/json' }
})

/**
 * 设置请求拦截器：----在项目中发请求（请求没有发出去）可以做一些事情
 * 客户端->[请求拦截器]->服务器端
 * token校验（JWT）：接收到服务器的token,存储到vuex/本地存储中，每次向服务器发送请求，我们应该把token带上
 * config :发起请求的请求配置项
 */
instance.interceptors.request.use(
  (config) => {
    let token = sessionStorage.getItem('token')
    if (token) config.headers.Authoriztion = token
    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)

export default instance
